class Car():#父类
    '''初始化方法：描述汽车的属性'''
    def __init__(self,brand,model,year):#这里不需要包含形参odemeter
        self.brand = brand
        self.model = model
        self.year = year
        self.odemeter = 50       # 在__init__()方法下定义的属性且设置了默认值，就无需在init()后面包含为它提供初始值的形参

    def get_descriptive_name(self):
        long_name=self.brand+' '+self.model+' '+str(self.year)
        return long_name.title()

    def read_odemeter(self):
        print('This car has '+str(self.odemeter)+' miles on it')

    def fill_gas_tank(self): # 给油箱加油操作
        print('油量不足，请及时加油！')

'''我们可以将专门针对汽车电瓶的属性和方法提取出来，放到另一个名为Battery的类中，并将Battery实例用作Eletriccar类的一个属性'''
class Battery():
    def __init__(self,battery_size=70):
        self.battery_size=battery_size
    def describe_battery(self):
        print("This car has a "+str(self.battery_size)+"-Kwh battery.")

    def fill_gas_tank(self):  #需要重写父类的方法，下面就不要用super().fill_gas_tank(self)来继承了
        print('电动车没有油箱，不需要加油')

    def get_range(self):    # 构建一个根据电量计算续航动力的方法
        range = 3 * self.battery_size
        return range


class Electriccar(Car):
    def __init__(self,brand,model,year):
        super().__init__(brand,model,year)
        # '''这里直接创建一个父类Battery的实例，并将其赋值给self.battery存放在子类Elecr中充当Elec的一个实例属性'''
        self.battery = Battery()



my_tesla=Electriccar('tesla','model.s',2016)
print(my_tesla.get_descriptive_name())
# my_tesla.battery 是指调用Elc下的battery属性(它还是个实例名)，可以通过(实例名).(方法名)调用Battey类下的describe_battery方法
my_tesla.battery.describe_battery()
print('It can range of '+str(my_tesla.battery.get_range())+' kilometers.')